package com.vhans.db.service;

import com.vhans.db.model.dto.ConditionDTO;
import com.vhans.db.model.dto.friend.FriendDTO;
import com.vhans.db.model.vo.friend.FriendInfoVO;
import com.vhans.db.model.vo.friend.FriendListVO;
import com.vhans.db.model.vo.friend.FriendVO;
import com.vhans.db.model.vo.friend.SingleRecentConversationResultVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 好友Service接口
 *
 * @author vhans
 * @date 2023-05-21
 */
public interface ICFriendService {

    /**
     * 查询好友列表(全部)
     *
     * @param condition 条件
     * @return 好友集合
     */
    List<FriendVO> selectCFriendVOList(ConditionDTO condition);

    /**
     * 查询用户的好友列表
     *
     * @return 好友集合
     */
    List<FriendListVO> selectUserFriendVOList();

    /**
     * 获取最近好友会话
     *
     * @param friendDTO 用户id + 最近的好友ids
     * @return 好友会话(正反方)
     */
    List<SingleRecentConversationResultVo> getRecentConversation(FriendDTO friendDTO);

    /**
     * 新增好友
     *
     * @param friend 好友
     */
    void insertFriend(FriendDTO friend);

    /**
     * 获取好友编辑信息
     *
     * @param id 好友主键
     * @return 好友
     */
    FriendInfoVO selectCFriendInfoById(Integer id);

    /**
     * 修改好友
     *
     * @param cFriend 好友
     * @return 影响行
     */
    int updateCFriend(FriendDTO cFriend);

    /**
     * 删除好友
     *
     * @param friend 需要删除的好友
     * @return 影响行
     */
    int deleteFriend(FriendDTO friend);
}
